From: Takao Fujiwara Date: Tue, 31 Jan 2023 08:42:23 +0000 (+0900) Subject: inputMethod: Make set_surrounding() send also empty string X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~405^2^2~125 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=f4dc6505854a9c54a4893944955000ef38781614;p=gnome-shell.git inputMethod: Make set_surrounding() send also empty string Empty surrounding text values needs to be sent to IBus engines so that the engines know the focus is changed and the values are updated. Also InputMethod can forward the "require-surrounding-text" signal from IBus engine to mutter. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5895 Part-of: --- diff --git a/js/misc/inputMethod.js b/js/misc/inputMethod.js index 3a007d5e9..e008e6411 100644 --- a/js/misc/inputMethod.js +++ b/js/misc/inputMethod.js @@ -76,6 +76,7 @@ var InputMethod = GObject.registerClass({ this._context.set_client_commit_preedit(true); this._context.connect('commit-text', this._onCommitText.bind(this)); + this._context.connect('require-surrounding-text', this._onRequireSurroundingText.bind(this)); this._context.connect('delete-surrounding-text', this._onDeleteSurroundingText.bind(this)); this._context.connect('update-preedit-text-with-mode', this._onUpdatePreeditText.bind(this)); this._context.connect('show-preedit-text', this._onShowPreeditText.bind(this)); @@ -114,6 +115,10 @@ var InputMethod = GObject.registerClass({ this.commit(text.get_text()); } + _onRequireSurroundingText(_context) { + this.request_surrounding(); + } + _onDeleteSurroundingText(_context, offset, nchars) { try { this.delete_surrounding(offset, nchars); @@ -235,7 +240,7 @@ var InputMethod = GObject.registerClass({ this._surroundingTextCursor = cursor; this.emit('surrounding-text-set'); - if (!this._context || !text) + if (!this._context || (!text && text !== '')) return; let ibusText = IBus.Text.new_from_string(text);